package buisness_service;

import java.util.Calendar;

public class Revenu extends BuisnessEntity {

	private Revenu_jour revenu_jour;
	private PosteRevenu posteRevenu;

	public Revenu(float montant, Calendar date, User user) {
		super(montant, date, user);
		this.getUser().addRevenu(this);
		this.verif_ancetre(date, user);

	}

	public Revenu(String nom, float montant, Calendar date,
			PosteRevenu posterevenu, User user) {
		super(montant, date, user);
		this.setNom(nom);
		this.getUser().addRevenu(this);
		this.verif_ancetre(date, user);
		this.setPosteRevenu(posterevenu);
		this.getPosteRevenu().getRevenus().add(this);

	}

	public PosteRevenu getPosteRevenu() {
		return posteRevenu;
	}

	public void setPosteRevenu(PosteRevenu posteRevenu) {
		this.posteRevenu = posteRevenu;
	}

	public Revenu_jour getRevenu_jour() {
		return revenu_jour;
	}

	public void setRevenu_jour(Revenu_jour revenu_jour) {
		this.revenu_jour = revenu_jour;
	}

	public void verif_ancetre(Calendar date, User user) {
		if (Rapport.rechercher_jour(date.get(1), Rapport.tab[date.get(2)],
				date.get(5), user.getRapport()) == false) {
			if (Rapport.index_annee >= 0) {
				if (Rapport.index_mois >= 0) {
					Finance_jour fin_jour = new Finance_jour(date.get(5),
							user.getRapport().get(Rapport.index_annee)
									.getFinances_mois().get(Rapport.index_mois), user );
					
					this.revenu_jour = fin_jour.getRev_jour();
				} else {
					Finance_mois finance = new Finance_mois(
							Rapport.tab[date.get(2)],
							user.getRapport().get(Rapport.index_annee), user);
					Finance_jour fin_jour = new Finance_jour(date.get(5),
							finance, user);
					this.revenu_jour = fin_jour.getRev_jour();
				}

			} else {

				Finance_annee f_a = new Finance_annee(this.getDate().get(1),user.getRapport());

				Finance_mois finance = new Finance_mois(
						Rapport.tab[date.get(2)], f_a, user);
				Finance_jour fin_jour = new Finance_jour(date.get(5), finance, user);
				this.revenu_jour = fin_jour.getRev_jour();

			}
		} else {

			this.revenu_jour = user.getRapport().get(Rapport.index_annee)
					.getFinances_mois().get(Rapport.index_mois)
					.getFinances_jour().get(Rapport.index_jour).getRev_jour();
		}

		user.getRapport().get(this.revenu_jour.getFinance_jour().getFinance_mois().getIndexFinance_annee())
				.getFinances_mois()
				.get(this.revenu_jour.getFinance_jour().getFinance_mois().getIndex_finance_mois())
				.getFinances_jour()
				.get(this.revenu_jour.getFinance_jour().getIndex_finance_jour()).getRev_jour()
				.getRevenu().add(this);

	}

}
